21985
23608
J'ai un tableau statsname comme
Pomme
X
banane
Oui
kiwi
z
J'ai besoin de mettre la pomme, la banane et le kiwi dans un tableau Fruits et X, Y et Z dans un tableau appelé alphabets.
Un mécanisme C # simple pour cela s'il vous plaît? 
Utilisez la surcharge IEnumerable  .Where qui fournit l'index.
var fruits = statsname.Where ((s, i) => i% 2 == 0) .ToArray ();
var alphabets = statsname.Where ((s, i) => i% 2! = 0) .ToArray ();
|
Volé dans Comment obtenir des éléments alternatifs à l'aide de Enumerable en C #
var fruits = myArray.Where ((t, i) => i% 2 == 0) .ToArray ();
var alphabets = myArray.Where ((t, i) => i% 2 == 1) .ToArray ();
|
Si j'ai bien compris, vous vous interrogez correctement sur ce que vous voulez, c'est très simple:
Vous voulez mettre des fruits dans un tableau de fruits et de même pour les alphabets et ils apparaissent alternativement dans le tableau statsname ainsi:
pour (int i = 0, j = 0; i  liste = nouvelle Liste  () {"pomme", "X", "banane", "Y", "Kiwi", "z"};
var result = list.Select ((l, i) => new {l, i})
.GroupBy (p => p.i% 2)
.Select (x => x.Select (v => v.l) .ToList ())
.Lister();
Ensuite, vous avez une liste de listes:
|
list  fruits = new List  ();
list  alphabet = new List  ();
pour (int i = 0; i  everyOther  (collection IEnumerable )
{
en utilisant (var e = collection.GetEnumerator ()) {
while (e.MoveNext ()) {
rendement retour e.Current;
e.MoveNext (); // en sauter un
}
}
}
Vous pouvez utiliser System.Linq.Skip pour ignorer le premier élément.
string [] words = "pomme X banane Y Kiwi z" .Split ();
var fruits = tous les autres (mots);
var alphabets = everyOther (words.Skip (1));
Utilisez-les simplement comme une nouvelle collection ou appelez .ToArray () ou .ToList () sur eux:
foreach (chaîne f dans les fruits)
Console.WriteLine (f);
string [] anArray = fruits.ToArray (); // en utilisant System.Linq
Vous avez maintenant ce dont vous avez besoin.
Les itérateurs sont des méthodes qui donnent un retour, voir Itérateurs (Guide de programmation C #). C'est une caractéristique très forte de la langue. Vous pouvez:
sauter des éléments
décorer des éléments
modifier la commande
concaténer des séquences (voir System.Linq.Concat)
...
|
Voici un code de travail, j'espère que cela vous sera utile:
en utilisant le système;
using System.Collections.Generic;
en utilisant System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
espace de noms ReadFile
{
programme de classe
{
static void ReadFile (chaîne filePath, List  custumerNames, List  phoneNumbers)
{
string line = string.Empty;
var fileStream = new StreamReader (filePath);
booléen isPhoneNumber = true;
while ((ligne = fileStream.ReadLine ())! = null)
{
if (isPhoneNumber)
{
phoneNumbers.Add (Convert.ToInt32 (ligne));
isPhoneNumber = false;
}
autre
{
custumerNames.Add (ligne);
isPhoneNumber = true;
}
}
fileStream.Close ();
}
static void Main (string [] args)
{
Console.WriteLine ("A commencé la lecture du fichier ...");
Liste  custumersNamesList = nouvelle liste  ();
List  custumersPhonesNumbers = new List  ();
ReadFile ("SampleFile.txt", custumersNamesList, custumersPhonesNumbers);
// En supposant que les deux listes ont la même longueur.
pour (int i = 0; i